
import jieba
from wordcloud import WordCloud
import re

from PIL import Image

import matplotlib.pyplot as plt

def read_file_gbk(filename):
    with open(filename,'r',encoding='GBK') as f:
        s = f.read()
        s = re.sub('/C', '', s)
        s = re.sub('\r|\n|\s','',s)
    return s
import jieba
import numpy as np


#统计平均句长
def calculate_avg_length(text,text2):
    size = 0
    num = 0
    size2 =0;
    num2 =0;
    s = read_file_gbk(text)
    s2 = read_file_gbk(text2)
    sentences = re.split(r' *[\.\？！。 ，][\'"\)\]]* *', s)
    sentences_2 = re.split(r' *[\.\？！。 ，][\'"\)\]]* *', s2)
    for stuff in sentences:
        size = size+len(stuff)
        num = num +1
    for stuff in sentences_2:
        size2 = size2+len(stuff)
        num2 = num2 +1


    # 构建数据
    x_data = ["句子总数","总句数","平均句长"]
    y_data = [size,num,size/num]
    y_data2  = [size2,num2,size2/num2]





    bar_width = 0.3

    plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    # 将X轴数据改为使用range(len(x_data), 就是0、1、2...
    plt.bar(x=x_data, height=y_data, label='修仙小说',
            color='steelblue', alpha=0.8, width=bar_width)
    plt.bar(x=np.arange(len(x_data)) + bar_width, height=y_data2,
            label='言情小说', color='indianred', alpha=0.8, width=bar_width)
    # 将X轴数据改为使用np.arange(len(x_data))+bar_width,
    # 就是bar_width、1+bar_width、2+bar_width...这样就和第一个柱状图并列了

    # 在柱状图上显示具体数值, ha参数控制水平对齐方式, va控制垂直对齐方式
    for x, y in enumerate(y_data):
        plt.text(x, y + 100, '%s' % y, ha='center', va='bottom')
    for x, y in enumerate(y_data2):
        plt.text(x + bar_width, y + 100, '%s' % y, ha='center', va='top')

    # 设置标题
    plt.title("平均句长计算")
    # 为两条坐标轴设置名称
    plt.xlabel("类型")
    plt.ylabel("数量")
    # 显示图例
    plt.legend()
    plt.show()




calculate_avg_length('XX.txt','YQ.txt')




